package Demo1;

//找这两个链表有没有相交
//计算链表长度差 让长的那个先走差值步，然后再一起一步步往后走 看会不会相交
class Solution3 {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        ListNode listA = headA;
        ListNode listB = headB;
        //计算链表长度
        int A = 0;
        int B = 0;
        while(listA != null) {
            listA = listA.next;
            A++;
        }
        while (listB != null) {
            listB = listB.next;
            B++;
        }
        //走差值步
        listA = headA;
        listB = headB;
        if(A > B) {
            int k = A - B;
            while(k != 0) {
                listA = listA.next;
                k--;
            }
        } else {
            int k = B - A;
            while (k != 0) {
                listB = listB.next;
                k--;
            }
        }
        //一起往后走
        while (listA != null && listB != null) {
            if(listA == listB) {
                return listA;
            }
            listA = listA.next;
            listB = listB.next;
        }

        return null;
    }
}

public class t3 {
}
